package _04_Stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 动作算子
 * 
 * forEach 循环
 * 
 * min,max,count,average 计算
 * 
 * 匹配 anyMath,allMath
 * 
 * 收集器 collect
 * 
 * @author lenovo
 * @date 2020年7月28日 @time 下午3:43:21
 */
public class _03_Stream {

	public static void main(String[] args) {
		List<String> strings = Arrays.asList("a", "b", "c");

		Stream<String> stream = strings.stream();
		// 测试 forEach
		stream.filter(x -> x.equals("a")).forEach(x -> System.out.println(x));

		// a

		// 测试count
		stream = strings.stream();
//		a

		// 统计有多少元素
		// 如果只是想查看有多少元素,可以直接调用集合的在size()更加简单
		// 一般动作算子和转换算子 一起使用,才能体现出优势
		long count = stream.count();
		System.out.println(count);
//		3

		// 统计集合中有多少a,正常写法,就是循环遍历,然后定义一个变量累加,最终变量的值就是a 的个数
		// 使用转换算子和动作算子一起使用,更加简单
		stream = strings.stream();
		// 结合转换算子一起使用,统计有几个 a 1
		count = stream.filter(x -> x.equals("a")).count();
		System.out.println(count);

		// 测试 collect
		stream = strings.stream();
		List<String> list = stream.map(x -> x + 1).collect(Collectors.toList());
		System.out.println(list);
	}

}
